Skip to content

Conversation

@AskAlexSharov
Copy link
Collaborator

@AskAlexSharov AskAlexSharov commented Oct 10, 2025

benchmarks are unreliable if run in multi-cores (because even 1 core overloading disk write io). So:
, must use -cpu=1:

go test -bench=BenchmarkNodeDBGeometry/1mb_2sec -run=BenchmarkNodeDBGeometry -cpu=1 -count=10 -benchtime=5s ./p2p/enode
goos: linux
goarch: amd64
pkg: github.com/erigontech/erigon/p2p/enode
cpu: AMD EPYC 4344P 8-Core Processor
BenchmarkNodeDBGeometry/1mb_2sec         	  304875	     24948 ns/op	         2.000 ms_worst
BenchmarkNodeDBGeometry/1mb_2sec         	  271047	     27810 ns/op	         3.000 ms_worst
BenchmarkNodeDBGeometry/1mb_2sec         	  246031	     29828 ns/op	         6.000 ms_worst
BenchmarkNodeDBGeometry/1mb_2sec         	  230364	     31389 ns/op	         9.000 ms_worst
BenchmarkNodeDBGeometry/1mb_2sec         	  205081	     34422 ns/op	        11.00 ms_worst
BenchmarkNodeDBGeometry/1mb_2sec         	  199292	     35899 ns/op	        13.00 ms_worst
BenchmarkNodeDBGeometry/1mb_2sec         	  189828	     40628 ns/op	        20.00 ms_worst
BenchmarkNodeDBGeometry/1mb_2sec         	  148378	     47022 ns/op	        17.00 ms_worst
BenchmarkNodeDBGeometry/1mb_2sec         	  141898	     48844 ns/op	        18.00 ms_worst
PASS
go test -bench=BenchmarkNodeDBGeometry/5mb_2sec -run=BenchmarkNodeDBGeometry -cpu=1 -count=10 -benchtime=5s ./p2p/enode
goos: linux
goarch: amd64
pkg: github.com/erigontech/erigon/p2p/enode
cpu: AMD EPYC 4344P 8-Core Processor
BenchmarkNodeDBGeometry/5mb_2sec         	  267589	     30181 ns/op	         3.000 ms_worst
BenchmarkNodeDBGeometry/5mb_2sec         	  252652	     31581 ns/op	         5.000 ms_worst
BenchmarkNodeDBGeometry/5mb_2sec         	  222480	     34548 ns/op	         8.000 ms_worst
BenchmarkNodeDBGeometry/5mb_2sec         	  203396	     37386 ns/op	         9.000 ms_worst
BenchmarkNodeDBGeometry/5mb_2sec         	  193489	     39445 ns/op	        12.00 ms_worst
BenchmarkNodeDBGeometry/5mb_2sec         	  177519	     40932 ns/op	        11.00 ms_worst
BenchmarkNodeDBGeometry/5mb_2sec         	  170472	     42475 ns/op	        13.00 ms_worst
BenchmarkNodeDBGeometry/5mb_2sec         	  169920	     43283 ns/op	        15.00 ms_worst
BenchmarkNodeDBGeometry/5mb_2sec         	  168820	     42521 ns/op	        14.00 ms_worst
BenchmarkNodeDBGeometry/5mb_2sec         	  171238	     43919 ns/op	        15.00 ms_worst
go test -bench=BenchmarkNodeDBGeometry/5mb_2sec -run=BenchmarkNodeDBGeometry -cpu=1 -count=10 -benchtime=5s ./p2p/enode
goos: linux
goarch: amd64
pkg: github.com/erigontech/erigon/p2p/enode
cpu: AMD EPYC 4344P 8-Core Processor
BenchmarkNodeDBGeometry/5mb_2sec         	  271959	     29516 ns/op	         3.000 ms_worst
BenchmarkNodeDBGeometry/5mb_2sec         	  268170	     30549 ns/op	         5.000 ms_worst
BenchmarkNodeDBGeometry/5mb_2sec         	  227325	     34291 ns/op	         7.000 ms_worst
BenchmarkNodeDBGeometry/5mb_2sec         	  202426	     37019 ns/op	        10.00 ms_worst
BenchmarkNodeDBGeometry/5mb_2sec         	  192224	     39110 ns/op	        11.00 ms_worst
BenchmarkNodeDBGeometry/5mb_2sec         	  181965	     40802 ns/op	        13.00 ms_worst
BenchmarkNodeDBGeometry/5mb_2sec         	  171835	     42273 ns/op	        14.00 ms_worst
BenchmarkNodeDBGeometry/5mb_2sec         	  164223	     42940 ns/op	        15.00 ms_worst
BenchmarkNodeDBGeometry/5mb_2sec         	  168981	     42261 ns/op	        14.00 ms_worst
BenchmarkNodeDBGeometry/5mb_2sec         	  167252	     43589 ns/op	        15.00 ms_worst
 go test -bench=BenchmarkNodeDBGeometry/10mb_2sec -run=BenchmarkNodeDBGeometry -cpu=1 -count=10 -benchtime=5s ./p2p/enode
goos: linux
goarch: amd64
pkg: github.com/erigontech/erigon/p2p/enode
cpu: AMD EPYC 4344P 8-Core Processor
BenchmarkNodeDBGeometry/10mb_2sec         	  241651	     31061 ns/op	         4.000 ms_worst
BenchmarkNodeDBGeometry/10mb_2sec         	  229740	     32291 ns/op	         5.000 ms_worst
BenchmarkNodeDBGeometry/10mb_2sec         	  211956	     33151 ns/op	         7.000 ms_worst
BenchmarkNodeDBGeometry/10mb_2sec         	  207318	     34564 ns/op	         8.000 ms_worst
BenchmarkNodeDBGeometry/10mb_2sec         	  190208	     36950 ns/op	         8.000 ms_worst
BenchmarkNodeDBGeometry/10mb_2sec         	  181152	     38898 ns/op	         9.000 ms_worst
BenchmarkNodeDBGeometry/10mb_2sec         	  171712	     40510 ns/op	         9.000 ms_worst
BenchmarkNodeDBGeometry/10mb_2sec         	  167190	     41969 ns/op	        10.00 ms_worst
BenchmarkNodeDBGeometry/10mb_2sec         	  164137	     40918 ns/op	         9.000 ms_worst
BenchmarkNodeDBGeometry/10mb_2sec         	  166485	     41738 ns/op	        10.00 ms_worst
 go test -bench=BenchmarkNodeDBGeometry/20mb_2sec -run=BenchmarkNodeDBGeometry -cpu=1 -count=10 -benchtime=5s ./p2p/enode
goos: linux
goarch: amd64
pkg: github.com/erigontech/erigon/p2p/enode
cpu: AMD EPYC 4344P 8-Core Processor
BenchmarkNodeDBGeometry/20mb_2sec         	  241070	     31248 ns/op	         8.000 ms_worst
BenchmarkNodeDBGeometry/20mb_2sec         	  201418	     36015 ns/op	        11.00 ms_worst
BenchmarkNodeDBGeometry/20mb_2sec         	  182701	     39571 ns/op	        11.00 ms_worst
BenchmarkNodeDBGeometry/20mb_2sec         	  166308	     43206 ns/op	        14.00 ms_worst
BenchmarkNodeDBGeometry/20mb_2sec         	  154442	     46006 ns/op	        16.00 ms_worst
BenchmarkNodeDBGeometry/20mb_2sec         	  146713	     47762 ns/op	        16.00 ms_worst
BenchmarkNodeDBGeometry/20mb_2sec         	  138229	     48429 ns/op	        18.00 ms_worst
BenchmarkNodeDBGeometry/20mb_2sec         	  126934	     49735 ns/op	        20.00 ms_worst
BenchmarkNodeDBGeometry/20mb_2sec         	  122917	     49225 ns/op	        21.00 ms_worst
BenchmarkNodeDBGeometry/20mb_2sec         	  131707	     48877 ns/op	        19.00 ms_worst

Also PageSize 16kb -> 4kb: improving 30% throughput

@AskAlexSharov AskAlexSharov changed the title Alex/nodedb 33 [wip] Oct 10, 2025
@AskAlexSharov AskAlexSharov changed the title [wip] [wip] bench nodedb sync thresholds Oct 10, 2025
taratorio pushed a commit that referenced this pull request Oct 13, 2025
current benchmarks show that after 5mb speed doesn't grow - but
benchmarks are very unreliable yet (don't know yet why).
form another side - user reported best performance at 20mb. 
So, setting to 5mb for now - until getting more bench-driven evidence. 
```
BenchmarkSyncPeriodDefault/20kb-16         	    1383	   4112960 ns/op	        20.00 ms_worst
BenchmarkSyncPeriodDefault/200kb-16        	    7178	   1106435 ns/op	        15.00 ms_worst
BenchmarkSyncPeriodDefault/1mb-16          	   18532	    328017 ns/op	        14.00 ms_worst
BenchmarkSyncPeriodDefault/2mb-16          	   33478	    193897 ns/op	        12.00 ms_worst
BenchmarkSyncPeriodDefault/5mb-16          	   72160	    100291 ns/op	        13.00 ms_worst
BenchmarkSyncPeriodDefault/10mb-16         	   77170	     99663 ns/op	        12.00 ms_worst
BenchmarkSyncPeriodDefault/20mb-16         	   67716	     97053 ns/op	        15.00 ms_worst
BenchmarkSyncPeriodDefault/40mb-16         	   74607	     97140 ns/op	        13.00 ms_worst
```
for #14182

it also depends on: #17284
(because it fixing bug of wrong `WANNA_RECOVERY` assert - Erigon can't
start without this fix). But unlikely we will port new mdbx to `3.2`
(will see how it work in `main`).

will continue work on benches in
#17405
@AskAlexSharov AskAlexSharov changed the title [wip] bench nodedb sync thresholds p2p/nodded: bench sync thresholds Oct 21, 2025
@AskAlexSharov AskAlexSharov changed the title p2p/nodded: bench sync thresholds p2p/nodedb: bench sync thresholds Oct 21, 2025
@AskAlexSharov AskAlexSharov enabled auto-merge (squash) October 21, 2025 04:14
@AskAlexSharov AskAlexSharov merged commit 4810e8f into main Oct 21, 2025
17 checks passed
@AskAlexSharov AskAlexSharov deleted the alex/nodedb_33 branch October 21, 2025 04:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants